The present invention relates to executing commands associated with a specific computer, and in particular, to systems and methods for executing commands on a specific virtual desktop operating in a multi-user server environment.
Networked computers that share information and resources have become commonplace today. The computers may be in networks that range from a small local area network with a few computers to a large network distributed over a vast geographic area with many computers. The networked computers communicate over a communication link such as coaxial or fiber optic cable.
The client/server architecture is commonly used for communicating between the networked computers. In a client/server architecture, a server is an application that offers a service to other applications residing on networked computers. Whereas, a client is a requester of such service. Therefore, an application consists of both a server and a client part which may run either on the same computer or on different computers residing on the network. This architecture allows processing to be distributed among the networked computers. Typically, a user on a client logs on to a server and invokes a client part of the application that builds the request for a particular service. The client part of the application then sends the request to the server part of the application. At the server, the request is received and the required service is performed. The results of the performed service are sent back to the client part of the application in a reply. Each user may have multiple client/server sessions in operation at one time. However, the user only needs one screen to control all the sessions.
Another client/server architecture has emerged called the thin-client/server computing architecture. In a thin-client/server computing architecture, the majority of the processing occurs on the server. The client is typically only involved with displaying the user interface and processing keyboard and mouse events and forwarding them to the server. Because the thin-client does not perform intense processing, the software and hardware requirements for the thin-client are minimized, thus reducing costs. Typically, in this architecture, multiple concurrent users log on and run applications in separate, protected sessions on a single server. Each separate, protected session is called a virtual desktop. Therefore, one user may be associated with multiple virtual desktops being displayed on one client, thus needing only one screen to control all virtual desktops.
Even though the thin-client/server architecture is a highly desirable and costeffective architecture, a disadvantage of the thin-client/server architecture is that users on remote computers or other virtual desktops cannot execute commands associated with a specific virtual desktop. For example, in some situations, such as in the insurance industry, adjusters in the field need to access information from a host computer that is typically remotely located at the office or at a central branch office. In the prior client/server architecture where each client is a separate computer, a user using an input device on a client enters a user name and password that gets transmitted to a host computer. After the host computer verifies the user name and password, the host computer initiates communication with a server over the network. The server identifies the client (user) desktop using a unique network identifier, such as an Internet Protocol (IP) address or a Media Access Control (MAC) address. The server then starts an application to run on the client. Typically, in this client/server architecture, ports and sockets are used to uniquely identify connections between the server and multiple clients. Both the server and the client have a socket. A socket is an endpoint on a communication link between two processes. Each socket uses the IP address along with other identifiers to uniquely identify the connection. Because the client is a separate computer with its own processing capabilities, the auto-started application runs on the client and retrieves necessary information from the host. Therefore, server processes are able to manage multiple conversations through a single port. However, in the thin-client/server architecture, the server does not have any mechanism to uniquely identify a particular user with a virtual display, access the specific virtual display, and execute commands associated with the specific virtual display. The prior techniques to auto-start an application in a client/server architecture are not applicable in the thin-client/server architecture.
Therefore, there is a need for a system and method for executing commands associated with a server for a specific virtual desktop in a multi-user server environment.
The present invention provides a system and method for executing commands associated with a specific virtual desktop. A virtual process broker running on a server communicates with a remote requester and multiple virtual desktops. A virtual process agent runs in each of the virtual desktops and communicates with the virtual process broker. A virtual desktop identifier is assigned to each of the virtual desktops and communicated to the virtual process broker. The virtual process broker records a status for the virtual desktop identifier in a virtual process broker database. Later, a remote requester such as a remote system or a virtual desktop generates a command request that is received by the virtual broker. The virtual broker determines whether the user associated with the command request is currently logged in by querying the virtual process broker database. If the user is logged in and the command request needs the first virtual desktop to perform some action, the virtual process broker forwards the request to the virtual process agent associated with the command request. The virtual process agent then initiates any actions requested in the command request.